<?php

class Usuario {

    private $idusuario;
    private $nome_usuario;
    private $senha_usuario;
    private $email_usuario;
    private $dtlogin_usuario;
    private $idinstituicao;
    private $nivel;
    private $permissao;
    //--------------------  atributos tabelas (externos )
    private $nome_instituicao;
    //variaveis internas
    private $bd; //conexão com o banco

    //private $tabela; //nome da tabela

    public function __construct() {
        $this->bd = new BD();
        //$this->tabela = "usuario"; RICARDO - 17/07/14 RETIREI PQ NÃO É NECESSÁRIO
        //   ISTO, JA QUE ESTA CLASSE TRATA SÓ DO USUÁRIO, NÃO É NECESSÁRIO ESTA LINHA
    }

    public function __get($key) {
        return $this->$key;
    }

    //método de retorno de valores do objeto
    public function __set($key, $value) {
        $this->$key = $value;
    }

    //METODOS
    //BANCO DE DADOS
    public function inserir() {

        $sql = "INSERT INTO usuario (nome_usuario, senha_usuario, email_usuario, dtlogin_usuario, idinstituicao, nivel, permissao )
               VALUES ('$this->nome_usuario','$this->senha_usuario' ,'$this->email_usuario' ,'$this->dtlogin_usuario', '$this->idinstituicao' ,'$this->nivel' ,'$this->permissao'  )";

        $retorno = pg_query($sql);

        return $retorno;
    }

// --------------------------------------------------------------------------
    public function listar($complemento = "") {
        $sql = "SELECT * FROM usuario " . $complemento;

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Usuario();
            $obj->idusuario = $reg["idusuario"];
            $obj->nome_usuario = $reg["nome_usuario"];
            $obj->senha_usuario = $reg["senha_usuario"];
            $obj->email_usuario = $reg["email_usuario"];
            $obj->dtlogin_usuario = $reg["dtlogin_usuario"];
            $obj->idinstituicao = $reg["idinstituicao"];
            $obj->nivel = $reg["nivel"];
            $obj->permissao = $reg["permissao"];

            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function excluir() {

        $sql = "DELETE FROM usuario WHERE idusuario =$this->idusuario";
        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function atualizar() {
        $retorno = false;                                 // nome dos campos
        $sql = "UPDATE usuario SET
                     nome_usuario   ='$this->nome_usuario',
                     senha_usuario  ='$this->senha_usuario',
                     email_usuario  ='$this->email_usuario',
                     dtlogin_usuario='$this->dtlogin_usuario',
                     idinstituicao  ='$this->idinstituicao',
                     nivel          ='$this->nivel',
                     permissao      ='$this->permissao'
                     where idusuario='$this->idusuario'";
        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function gravaUltimologin() {
        $retorno = false;
        $sql = "UPDATE usuario SET
                    dtlogin_usuario= now()
                    WHERE idusuario='$this->idusuario'";
        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function retornarunico() {
        $sql = "SELECT * FROM usuario WHERE idusuario='$this->idusuario'";

        $resultado = pg_query($sql);
        $retorno = NULL;

        $req = pg_fetch_assoc($resultado);
        if ($req == true) {
            $obj = new Usuario();
            $obj->idusuario = $req["idusuario"];
            $obj->nome_usuario = $req["nome_usuario"];
            $obj->senha_usuario = $req["senha_usuario"];
            $obj->email_usuario = $req["email_usuario"];
            $obj->dtlogin_usuario = $req["dtlogin_usuario"];
            $obj->idinstituicao = $req["idinstituicao"];
            $obj->nivel = $req["nivel"];
            $obj->permissao = $req["permissao"];

            $retorno = $obj;
        } /* else {
          $retorno = null;
          } COMO $retorno ja vem com NULL não é necessário este else - RICARDO - 17/07/14 */

        return $retorno;
    }

// --------------------------------------------------------------------------
    public function listarJoin($complemento = "") {
        //$sql = "SELECT * FROM usuario ". $complemento; não teria necessidade de ter isto aqui - 17/07/14

        $sql = "SELECT usuario.*, instituicao.nome_instituicao as nome_instituicao
        FROM usuario
        INNER JOIN
            instituicao ON
            usuario.idinstituicao = instituicao.idinstituicao
        " . $complemento;


        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Usuario();
            $obj->idusuario = $reg["idusuario"];
            $obj->nome_usuario = $reg["nome_usuario"];
            $obj->senha_usuario = $reg["senha_usuario"];
            $obj->email_usuario = $reg["email_usuario"];
            $obj->dtlogin_usuario = $reg["dtlogin_usuario"];
            $obj->idinstituicao = $reg["idinstituicao"];
            $obj->nivel = $reg["nivel"];
            $obj->permissao = $reg["permissao"];

            $obj->nome_instituicao = $reg["nome_instituicao"];

            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        //return $retorno;
        return $retorno;
    }

}
